package tbs.framework.boardcast.subject;

import tbs.framework.boardcast.notify.INotifying;
import tbs.framework.boardcast.obsever.IObserver;

/**
 * @author tongj
 */
public interface ISubject {

    /**
     * 获取主题ID
     *
     * @return
     */
    Long getSubjectId();

    /**
     * 添加观察者
     *
     * @param observer
     */
    void addObserver(IObserver observer);

    /**
     * 移除观察者
     *
     * @param observer
     */
    void removeObserver(IObserver observer);

    /**
     * 获取观察者数量
     *
     * @return
     */
    int getObserverCount();

    /**
     * 通知观察者
     *
     * @param notifying
     */
    void notifyObservers(INotifying notifying);
}
